﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Entity = SoTaiChinh.Library.Entity;
using Business = SoTaiChinh.Library.Business;
public partial class templates_admin_usercontrols_listgiaidap : System.Web.UI.UserControl
{
    Entity.HoiDap clsE_HoiDap = new SoTaiChinh.Library.Entity.HoiDap();
    Business.HoiDap clsB_HoiDap = new SoTaiChinh.Library.Business.HoiDap();
    Entity.ChuDe clsE_ChuDe = new SoTaiChinh.Library.Entity.ChuDe();
    Business.ChuDe clsB_ChuDe = new SoTaiChinh.Library.Business.ChuDe();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            dtCauHoi = clsB_HoiDap.Select(clsE_HoiDap);
            setThemChuDe(false);
            Alert.Load_DropDownList(ddlChuDe, clsB_ChuDe.SelectChuDeHoiDap(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
            loadAllCauHoi();
        }
    }

    #region Phân trang bằng PagedDataSource
    private static DataTable dtCauHoi = new DataTable();
    //Khái báo các property trang, chỉ số đầu, chỉ số cuối
    private int CurrentPage
    {
        get
        {
            object objPage = ViewState["_CurrentPage"];

            int _CurrentPage = 0;
            if (objPage == null)
            {
                _CurrentPage = 0;
            }
            else
            {
                _CurrentPage = (int)objPage;
            }
            return _CurrentPage;
        }
        set { ViewState["_CurrentPage"] = value; }
    }
    private int fistIndex
    {
        get
        {

            int _FirstIndex = 0;
            if (ViewState["_FirstIndex"] == null)
            {
                _FirstIndex = 0;
            }
            else
            {
                _FirstIndex = Convert.ToInt32(ViewState["_FirstIndex"]);
            }
            return _FirstIndex;
        }
        set { ViewState["_FirstIndex"] = value; }
    }
    private int lastIndex
    {
        get
        {
            int _LastIndex = 0;
            if (ViewState["_LastIndex"] == null)
            {
                _LastIndex = 0;
            }
            else
            {
                _LastIndex = Convert.ToInt32(ViewState["_LastIndex"]);
            }
            return _LastIndex;
        }
        set { ViewState["_LastIndex"] = value; }
    }

    PagedDataSource _PageDataSource = new PagedDataSource();

    //Load dữ liệu và phân trang cho dữ liệu
    private void BindItemsList(DataTable dt)
    {
        DataTable dataTable = dt;
        _PageDataSource.DataSource = dataTable.DefaultView;
        _PageDataSource.AllowPaging = true;
        _PageDataSource.PageSize = 3;
        _PageDataSource.CurrentPageIndex = CurrentPage;
        ViewState["TotalPages"] = _PageDataSource.PageCount;

        this.lblPageInfo.Text = "Trang " + (CurrentPage + 1) + " của " + _PageDataSource.PageCount;
        this.lbtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnNext.Enabled = !_PageDataSource.IsLastPage;
        this.lbtnFirst.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnLast.Enabled = !_PageDataSource.IsLastPage;

        this.rptDanhGiaiDap.DataSource = _PageDataSource;
        this.rptDanhGiaiDap.DataBind();
        this.doPaging();
        
    }
    //Phân trang
    private void doPaging()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("PageIndex");
        dt.Columns.Add("PageText");
        fistIndex = CurrentPage - 5;
        if (CurrentPage > 5)
        {
            lastIndex = CurrentPage + 5;
        }
        else
        {
            lastIndex = 10;
        }
        if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
        {
            lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
            fistIndex = lastIndex - 10;
        }
        if (fistIndex < 0)
        {
            fistIndex = 0;
        }
        for (int i = fistIndex; i < lastIndex; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = i;
            dr[1] = i + 1;
            dt.Rows.Add(dr);
        }
        this.dlPaging.DataSource = dt;
        this.dlPaging.DataBind();
    }

    //Trang dầu tiên
    protected void lbtnFirst_Click(object sender, EventArgs e)
    {
        CurrentPage = 0;
        BindItemsList(dtCauHoi);
    }
    //Trang sau trang đang hiển thị
    protected void lbtnPrevious_Click(object sender, EventArgs e)
    {
        CurrentPage -= 1;
        BindItemsList(dtCauHoi);
    }
    //Trang tiếp theo trang đang hiển thị
    protected void lbtnNext_Click(object sender, EventArgs e)
    {
        CurrentPage += 1;
        BindItemsList(dtCauHoi);
    }
    //Trang cuối
    protected void lbtnLast_Click(object sender, EventArgs e)
    {
        CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
        BindItemsList(dtCauHoi);
    }
    //Hàm sự kiện dlPaging
    protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName.Equals("Paging"))
        {
            CurrentPage = Convert.ToInt32(e.CommandArgument.ToString());
            BindItemsList(dtCauHoi);
        }
    }
    protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
        if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
        {
            lnkbtnPage.Enabled = false;
            //lnkbtnPage.Style.Add("fone-size", "14px");
            //lnkbtnPage.Font.Bold = true;
            lnkbtnPage.CssClass = "active";
        }
    }
    #endregion
    private void loadAllCauHoi()
    {
        if (dtCauHoi.Rows.Count == 0)
        {
            BindItemsList(dtCauHoi);
            PhanTrang.Visible = false;
            msgNoRows.Style.Add("display", "block");
        }
        else if (dtCauHoi.Rows.Count > 0 && dtCauHoi.Rows.Count <= 3)
        {
            BindItemsList(dtCauHoi);
            PhanTrang.Visible = false;
        }
        else if (dtCauHoi.Rows.Count > 3)
        {
            BindItemsList(dtCauHoi);
            PhanTrang.Visible = true;
        }
    }
    protected void btnTim_Click(object sender, EventArgs e)
    {
        if (txtTuKhoa.Text != "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue == "0" && ddlLoaiCauHoi.SelectedValue == "2")
        {
            TimKiem(0);
        }
        else if (txtTuKhoa.Text == "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue == "0" && ddlLoaiCauHoi.SelectedValue != "2")
        {
            TimKiem(1);
        }
        else if (txtTuKhoa.Text == "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue != "0" && ddlLoaiCauHoi.SelectedValue == "2")
        {
            TimKiem(2);
        }
        else if (txtTuKhoa.Text != "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue == "0" && ddlLoaiCauHoi.SelectedValue != "2")
        {
            TimKiem(3);
        }
        else if (txtTuKhoa.Text == "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue != "0" && ddlLoaiCauHoi.SelectedValue != "2")
        {
            TimKiem(4);
        }
        else if (txtTuKhoa.Text != "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue != "0" && ddlLoaiCauHoi.SelectedValue == "2")
        {
            TimKiem(5);
        }
        else if (txtTuKhoa.Text != "Tìm kiếm câu hỏi" && ddlChuDe.SelectedValue != "0" && ddlLoaiCauHoi.SelectedValue != "2")
        {
            TimKiem(6);
        }
        else
        {
            Alert.Show("Bạn chưa nhập từ khóa hoặc chưa chọn chủ đề cần tìm");
            dtCauHoi = clsB_HoiDap.Select(clsE_HoiDap);
            loadAllCauHoi();
        }       
        
        
    }
    private void TimKiem(int Opt)
    {
        clsE_HoiDap.Option = Opt;
        clsE_HoiDap.CauHoi = txtTuKhoa.Text;
        clsE_HoiDap.IdChuDe = Convert.ToInt32(ddlChuDe.SelectedValue);
        clsE_HoiDap.TrangThai = Convert.ToBoolean(Convert.ToInt32(ddlLoaiCauHoi.SelectedValue));
        dtCauHoi = clsB_HoiDap.SelectTimKiem(clsE_HoiDap);
        rptDanhGiaiDap.DataSource = dtCauHoi;
        rptDanhGiaiDap.DataBind();
        if (dtCauHoi.Rows.Count == 0)
        {
            PhanTrang.Visible = false;
        }
        else
        { PhanTrang.Visible = true; }
    }
    protected void rptDanhGiaiDap_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        try
        {
            //Nếu click nút xóa từ danh sách
            if (e.CommandName == "xoa")
            {
                bool delete = false;                
                clsE_HoiDap.Id = Convert.ToInt32(e.CommandArgument.ToString());                
                delete = clsB_HoiDap.Delete(clsE_HoiDap);
                if (delete)
                {
                    Alert.Show("Xóa câu hỏi thành công!!!");
                    dtCauHoi = clsB_HoiDap.Select(clsE_HoiDap);
                    loadAllCauHoi();
                }
                else
                { Alert.Show("Xóa câu hỏi không thành công !!!"); }
            }
            if (e.CommandName == "statusupdate")
            {
                try
                {
                    bool trangthai = false;
                    clsE_HoiDap.Id = Convert.ToInt32(e.CommandArgument.ToString());
                    trangthai = clsB_HoiDap.Update_TrangThai(clsE_HoiDap);
                    if (trangthai)
                    {
                        Alert.Show("Cập nhật trạng thái thành công !!!");
                        dtCauHoi = clsB_HoiDap.Select(clsE_HoiDap);
                        loadAllCauHoi();
                    }
                    else
                    { Alert.Show("Cập nhật trạng thái không thành công !!!"); }
                }
                catch
                { }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void btnLamMoi_Click(object sender, EventArgs e)
    {
        dtCauHoi = clsB_HoiDap.Select(clsE_HoiDap);
        loadAllCauHoi();
    }
    protected void btnThemMoi_Click(object sender, EventArgs e)
    {
        setThemChuDe(true);
    }
    private void setThemChuDe(bool set)
    {
        ddlChuDe.Visible = !set;
        btnThemChuDe.Visible = !set;
        btnXoaChuDe.Visible = !set;
        txtTenChuDe.Visible = set;
        btnLuuChuDe.Visible = set;
        btnTroVe.Visible = set;

    }
    protected void btnXoaChuDe_Click(object sender, EventArgs e)
    {
        bool delete = false;
        if (ddlChuDe.SelectedValue != "0")
        {
            clsE_ChuDe.IdChuDe = Convert.ToInt32(ddlChuDe.SelectedValue);
            delete = clsB_ChuDe.Delete(clsE_ChuDe);
            if (delete)
            {
                Alert.Show("Xóa chủ đề thành công !!!");
                Alert.Load_DropDownList(ddlChuDe, clsB_ChuDe.SelectChuDeHoiDap(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
            }
            else
            {
                Alert.Show("Xóa chủ đề thành công !!!");
            }
        }
        else
        { Alert.Show("Bạn chưa chọn chủ đề cần xóa !!!"); }
    }
    protected void btnLuuChuDe_Click(object sender, EventArgs e)
    {
        bool save = false;
        if (txtTenChuDe.Text == "")
        {
            Alert.Show("Bạn chưa nhập tên chủ đề");
        }
        else
        {
            clsE_ChuDe.TenChuDe = txtTenChuDe.Text;
            clsE_ChuDe.ChuDeHinhAnh = false;
            clsE_ChuDe.ChuDeTaiNguyen = false;
            clsE_ChuDe.ChuDeVideo = false;
            clsE_ChuDe.ChuDeHoiDap = true;
            save = clsB_ChuDe.Insert(clsE_ChuDe);
            if (save)
            {
                Alert.Show("Thêm chủ đề thành công !!!");
                Alert.Load_DropDownList(ddlChuDe, clsB_ChuDe.SelectChuDeHoiDap(), "TenChuDe", "IdChuDe", "------Chọn chủ đề------");
                setThemChuDe(false);
            }
            else
            {
                Alert.Show("Thêm chủ đề không thành công !!!");
                setThemChuDe(false);

            }
        }
    }
    protected void btnTroVe_Click(object sender, EventArgs e)
    {
        setThemChuDe(false);
    }
}
